Developer Documentation

QuickTime 4 API Documentation

QuickTime 4 Reference

| Previous | Chapter Contents | Chapter Top | Next |

The Compressor Capability Structure

These new compressor capability flags have been added to the compressor capability structure. Your component sets these flags in the flags field of the CodecCapabilities structure:

enum {
    codecCanAsyncWhen               = 1L << 16,
    codecCanShieldCursor            = 1L << 17,
    codecCanManagePrevBuffer        = 1L << 18,
    codecHasVolatileBuffer          = 1L << 19,
    codecImageBufferIsOnScreen      = 1L << 21,
    codecWantsDestinationPixels     = 1L << 22,
    codecWantsSpecialScaling        = 1L << 23
};

Flag descriptions

codecCanAsyncWhen
Indicates whether your decompressor component supports scheduled asynchronous decompression. Set this flag to 1 if your component can support the scheduling functionality of the ImageCodecBandDecompress function. Note that you must also set the codecCanAsync flag to 1.

codecCanShieldCursor
Indicates whether your decompressor component will manage the shielding of the cursor during decompression. If your component can manage the cursor's display, set this flag to 1. Your component can use the Image Compression Manager's ICMShieldSequenceCursor function to shield the cursor. The cursor is automatically unsheilded when you call ICMDecompressComplete .

Otherwise, set this flag to 0--the Image Compression Manager then manages the cursor for you.

It is highly recommended that you support this capability if your decompressor supports asynchronous operation or the cursor may remain shielded for unacceptably long periods of time.

codecCanManagePrevBuffer
Indicates that your compressor component is capable of allocating and managing the prevPixMap used in temporal compression. If this flag is set, then your compressor must determine when to update the prevPixMap during compression sequences. Codecs setting this flag should also set codecCanCopyPrev .

codecHasVolatileBuffer
Some hardware decompressors don't actually draw the decompressed pixels into the frame buffer as requested by QuickTime. Instead, they have a second frame buffer that floats or overlays above the main frame buffer. The image is decompressed into this secondary frame buffer instead. To the user, the effect is the same because the video hardware merges the two frame buffers together. When the window that contains the image is moved to another location in the same screen buffer, the Window Manager uses CopyBits to transfer the window's pixels from the old location to the new location. Unfortunately, because the Window Manager is unaware of the presence of the secondary frame buffer, it cannot move the image it is displaying.

By setting the codecHasVolatileBuffer flag to 1, the decompressor component informs QuickTime that it uses a secondary frame buffer. When the Window Manager moves a window, QuickTime forces a redraw of the contents of the window so that the secondary frame buffer can be repositioned and/or updated as necessary.

codecImageBufferIsOnScreen
By setting the codecImageBufferIsOnScreen flag to 1, the decompressor component informs QuickTime that it is a direct screen transfer codec. Codecs that use the ImageCodecNewImageBufferMemory call to create an offscreen buffer that is really onscreen would set this flag. See "Accelerated Video Support" for more information on this flag.

codecWantsSpecialScaling
Specifies to use an image buffer whose size is determined by the requestedBufferWidth and requestedBufferHeight fields in the decompression parameters structure ( CodecDecompressParams ) or compression parameters structure ( CodecCompressParams ).


© 1999 Apple Computer, Inc.

| Previous | Chapter Contents | Chapter Top | Next |